package com.xxx.yuedong.community.service;

import com.xxx.yuedong.community.controller.form.FollowForm;
import com.xxx.yuedong.mine.pojo.vo.BeFollowVO;
import com.xxx.yuedong.mine.pojo.vo.FollowVO;
import org.apache.ibatis.annotations.Param;
import com.xxx.yuedong.community.pojo.Follow;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 关注表的业务类接口
 *
 * @Author YinXi
 * @Versin 1.0.0
 * @Date 2023/8/3
 */
@Transactional
public interface FollowService {
    /**
     * 实现点击关注业务
     */
    String getFollow(FollowForm form);
    /**
     * 实现点击取消关注业务
     */
    void outFollow(FollowForm form);
    /**
     * 获取当前关注者id的被关注者的数量
     */
    int countFollow(Long formId);
    /**
     * 获取当前关注者id的粉丝数量
     */
    int countToFollow(Long formId);

    /**
     * 查询被关注者的关注者列表
     */
    List<BeFollowVO> queryBeFollowList(Long userId);

    /**
     * 判断关注者是否关注过被关注者
     */
    List<FollowForm> isFollower(FollowForm form);
    /**
     * 重构Redis缓存
     */
    void rebulidFollowList();
}
